package Abnormal.Thrown;

public class throwsArThrow {
    public static void main(String[] args) {
        /*
        throws:写在方法定义处，表示声明一个异常，告诉调用者，使用本方法可能会出现异常
        throw:写在方法内，结束方法，手动抛出异常，交给调用者，方法中下面的代码不再执行

        需求:
            定义一个方法求数组的最大值
         */

        int[] arr=null;
        int max= 0;
        try {
            max = getMax(arr);
        } catch (NullPointerException e) {
            System.out.println("空指针异常");
        }catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("索引越界异常");
        }
        System.out.println(max);

    }
    public static int getMax(int[] arr){
        //手动书写异常对象，并把这个异常交给方法调用者
        //此时方法就会结束，下面的代码不会再执行
        if(arr==null){
            throw  new NullPointerException();
        }

        //手动书写异常对象，并把这个异常交给方法调用者
        //此时方法就会结束，下面的代码不会再执行
        if(arr.length==0){
            throw  new ArrayIndexOutOfBoundsException();
        }

        int max=arr[0];
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]>max){
                max=arr[i];
            }

        }
        return  max;
    }
}
